package TPVTarryDAOS;

import Herramientas.PasarelaDatos;
import Herramientas.ResultSets;
import TPVTarryDTOS.ItemListaDTO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Mauricio Alan
 */
public class ListaItemsDAO {

    private PasarelaDatos db;
    private ResultSets res;

    public ListaItemsDAO() {
        db = new PasarelaDatos();
        res = new ResultSets();
    }

    /**
     * ALAN GONZALEZ AGREGA ITEM A LA LISTA
     *
     * @param cb
     */
    public void agregaItem(ItemListaDTO item) {
        db.openDatabase();
        String query = " INSERT INTO lista_items_venta SET";
        query += " lista_items_venta.id_ticket =" + item.getIdTicket() + ",";
        query += " lista_items_venta.id_item = " + item.getIdItem() + ",";
        query += " lista_items_venta.descripcion = '" + item.getDescripcion() + "',";
        query += " lista_items_venta.cantidad = " + item.getCantidad() + ",";
        query += " lista_items_venta.precio_publico = " + item.getPrecioPublico() + ",";
        query += " lista_items_venta.sub_tot = ((lista_items_venta.precio_publico)*(lista_items_venta.cantidad ))";
        db.execute(query);
        db.closeDatabase();
    }

    /**
     * ALAN GONZALEZ DEVUELVE EL VETOR CON TODOS LOS ITEMS DE UN TICKET
     *
     * @param idTicket
     * @return
     */
    public Vector itemsListaVenta(int idTicket) {
        Vector items = new Vector();
        String query = "SELECT * FROM lista_items_venta WHERE lista_items_venta.id_ticket=" + idTicket;
        db.openDatabase();
        ResultSet rst = db.executeQuery(query);
        try {
            while (rst.next()) {
                ItemListaDTO item = new ItemListaDTO();
                item = res.itemListaDTO(rst);
                items.add(item);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ListaItemsDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return items;
    }

    /**
     * ALAN GONZALEZ REINICA LA TABLA DE ITEMS DE VENTA PARA UNA NUEVA VENTA
     */
    public void limpiarListaItems() {
        db.openDatabase();
        String query = "truncate lista_items_venta";
        db.execute(query);
        db.closeDatabase();
    }

    /**
     * ALAN GONZALEZ METODO PARA OBTENER EL TOTAL DE LA VENTA
     *
     * @return
     */
    public double totalVenta(int idTicket) {
        double total = 0.0;
        db.openDatabase();
        String query = "SELECT SUM(lista_items_venta.sub_tot) as totalVenta from lista_items_venta where lista_items_venta.id_ticket =" + idTicket;
        ResultSet rst = db.executeQuery(query);
        try {
            if (rst.next()) {
                total = rst.getDouble("totalVenta");
            } else {
                total = 0.0;
            }
        } catch (SQLException ex) {
            Logger.getLogger(ListaItemsDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return total;
    }

    /**
     * ALAN GONZALEZ METODO PARA EDITAR EL NUMERO DE PIEZAS DE UN ITEM
     *
     * @param idItem
     * @param cantidad
     */
    public void editaNumeroPiezasItem(int idItem, double cantidad) {
        db.openDatabase();
        // ACTUALIZO EL NUMERO DE PEIZAS
        String query = "UPDATE lista_items_venta SET `cantidad`='" + cantidad + "' WHERE `id`='" + idItem + "';";
        db.execute(query);
        // ACTUALIZO EL SUBTOTAL DEL ITEM
        String query2
                = "UPDATE lista_items_venta SET `sub_tot`= "
                + "((lista_items_venta.cantidad)*(lista_items_venta.precio_publico)) "
                + "WHERE `id`='" + idItem + "';";
        db.execute(query2);
        db.closeDatabase();
    }

    /**
     * ALAN GONZALEZ METODO PARA ELIMINAR UN PRODCUTO DE LA LISTA DE VENTA
     *
     * @param idItem
     */
    public void eliminarItemVenta(int idItem) {
        db.openDatabase();
        String query = "DELETE FROM lista_items_venta WHERE id=" + idItem;
        db.execute(query);
        db.closeDatabase();
    }

}
